Linux 内核的故事
1991 年 8 月 25 日,芬兰研究生 Linus Torvalds 告诉 Minix 新闻组,他正在开发他的新的免费操作系统,这将“只是一个爱好。”但在 29 年后,Linux 几乎统治了计算机世界。在 2020 年的 Linux 内核历史报告中,Linux 基金会讲述了从 Linux 内核发布的第一天到 2020 年 8 月 Linux 内核 5.8 发布的故事。虽然基金会以...
2024-01-10Linux内核驱动
寄存器与内存 寄存器与内存的区别在哪里呢?寄存器和RAM的主要不同在于寄存器操作有副作用(side effect或边际效果):读取某个地址时可能导致该地址内容发生变化,比如很多设备的中断状态寄存器只要一读取,便自动清零。内存与IO在X86处理器中存在IO空间的概念,IO空间是相对内存...
2024-01-10linux内核aio功能
我正在测试内核异步io函数(不是posixaio),并试图弄清楚它是如何工作的。下面的代码是一个完整的程序,其中我简单地将一个数组重复写入使用O_DIRECT打开的文件中。我在回调函数中收到一个错误“写错的字节期望1024得到0”(请参阅work_done()中的fprintf语句)。对于不熟悉内核aio的用户,以...
2024-01-10Linux内核如何测试?
Linux内核开发人员如何在提交代码后在本地测试他们的代码?他们是否使用某种单元测试,构建自动化?测试计划?回答:linux内核非常重视社区测试。通常,任何开发人员都会在提交之前测试他们自己的代码,并且经常会使用Linus的内核开发版本,或者与他们的工作相关的项目使用其他不稳定/开发树...
2024-01-10Linux内核中的自旋锁
自旋锁不会引起睡眠,当一个进程在访问内核无法获取自旋锁时,会进入忙循环,一直等待下去。 实例:Pcilynx.c (\linux-2.6.30.4\drivers\ieee1394) 1 声明 struct ti_lynx { int id; /* se...
2024-01-10Linux用户态和内核态
一、Linux系统结构Linux特权级别:Linux的架构中,很重要的一个能力就是操纵系统资源的能力。系统资源是有限的,如果不加限制的允许任何程序以任何方式去操纵系统资源,必然会造成资源的浪费,发生资源不足等情况。为了减少这种情况的发生,Linux制定了一个等级制定,即特权。Linux将特权分成两...
2024-01-10Linux 内核通用链表学习小结
描述在linux内核中封装了一个通用的双向链表库,这个通用的链表库有很好的扩展性和封装性,它给我们提供了一个固定的指针域结构体,我们在使用的时候,只需要在我们定义的数据域结构体中包含这个指针域结构体就可以了,具体的实现、链接并不需要我们关心,只要调用提供给我们的相关接口就...
2024-01-10Linux系统内核参数优化
Linux系统内核参数优化 在工作中,平常我们使用官方镜像安装的Linux系统(非自定制化的)系统内核考虑的是最通用的场景,通常设定都偏向稳定保守,比较典型的代表如红帽系列的RHEL、CentOS等。而在正式的生成环境使用中,服务器的CPU、内存等硬件配置都比较高,而安装系统时默认的系统内核参...
2024-01-10Linux内核参数共享内存
kernel.shmallThis parameter sets the total amount of shared memory pages that can be used system wide.kernel.shmmaxThis parameter defines the maximum size in bytes of a single shared memory segment that a Linux process can allocate in its virtual address s...
2024-01-10钻进Linux内核看个究竟
Linux 内核,这个经常听见,却不不知道它具体是干嘛的东西,是不是觉得非常神秘?Linux 内核看不见摸不着,而对于这类东西,我们经常无从下手。本文就以浅显易懂的语言,带你钻进 Linux 内核,看它到底长啥样。内核是 Linux 操作系统的核心组件,它向上连接应用程序,向下直接与硬件打交道。其...
2024-01-10在Linux内核中使用浮点
我正在阅读Robert Love的“ Linux内核开发”,并且遇到了以下段落:当用户空间进程使用浮点指令时,内核将管理从整数到浮点模式的转换。内核使用浮点指令时必须执行的操作因体系结构而异,但是内核通常会捕获陷阱,然后启动从整数模式到浮点模式的转换。与用户空间不同,内核不具有对浮点...
2024-01-10ARM64 Linux内核页表块映射
导读内核文档Documentation/arm64/memory.rst描述了ARM64 Linux内核空间的内存映射情况,应该是此方面最权威文档。内核文档Documentation/arm64/memory.rst描述了ARM64 Linux内核空间的内存映射情况,应该是此方面最权威文档。以典型的4K页和48位虚拟地址为例,整个内核空间的虚拟地址分布如下:从ffff0...
2024-01-10Linux获得内核“锁定”功能
经过多年的无数次审查,讨论和代码重写,Linus Torvalds周六批准了Linux内核的一项新安全功能,称为“锁定”。这项新功能将作为LSM(Linux安全模块)发布在即将发布的Linux内核5.4分支中,该分支默认情况下处于关闭状态。由于存在破坏现有系统的风险,因此使用是可选的。工作方式这项新功能的主要功...
2024-01-10详解Linux内核内存管理架构
内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高的要求。本文从内存管理硬件架构、地址空间划分和内存管理软件架构三个方面入手,...
2024-01-10Linux 内核空间与用户空间实现与分析
本文以 32 位系统为例介绍内核空间(kernel space)和用户空间(user space)。内核空间和用户空间对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护...
2024-01-10从Linux内核发送UDP数据包
即使已经存在一个类似的主题,我也注意到它可以追溯到两年前,因此我认为打开一个新主题更为合适。我试图弄清楚如何从Linux内核(3.3.4)发送UDP数据包,以便监视随机数生成器(/drivers/char/random.c)的行为。到目前为止,由于sock_create和sock_sendmsg函数,我已经设法监视了一些事情。您可以在此消息...
2024-01-10【linux】Linux 内核双链表的实现太精妙了
通过设计前驱和后继两个指针域,双链表可以从两个方向遍历。如果打乱前驱、后继的依赖关系,就可以构成"二叉树";如果再让首节点的前驱指向链表尾节点、尾节点的后继指向首节点(图中虚线部分),就构成了循环链表;如果设计更多的指针域,就可以构成各种复杂的树状数据结构。这是 Linux ...
2024-01-10Linux 系统优化的一些建议(内核优化)
关闭swap如果服务器上有运行数据库服务或消息中间件服务,请关闭交换分区echo "vm.swappiness = 0" >> /etc/sysctl.confsysctl -pOOM Killer一般我们的linux服务都是混部服务的,每个程序申请的物理内存都是共享的;例如物理内存只有1g,启动2个程序各申请1g是可以的,linux通过这种过度分配的方式来达到内存的...
2024-01-10漫画赏析:Linux内核到底长啥样
今天,我来为大家解读一幅来自 TurnOff.us 的漫画 “InSide The Linux Kernel” 。 TurnOff.us 是一个极客漫画网站,作者Daniel Stori 画了一些非常有趣的关于编程语言、Web、云计算、Linux 相关的漫画。今天解读的便是其中的一篇。在开始,我们先来看看这幅漫画的全貌!这幅漫画是以一个房子的侧方刨面图来绘...
2024-01-10如何在Linux上设置自动内核更新
向Linux内核应用安全更新是一个简单的过程,可以使用 apt ,yum或kexec之类的工具来完成。 但是,在管理成百上千个运行不同Linux发行版的服务器进行修补时,此方法可能具有挑战性且耗时。手动更新内核需要重新引导系统。 这会导致停机,这可能是个问题,因此通常计划在特定的时间间隔进行重启。 ...
2024-01-10【linux】linux 内核参数的实际作用的疑惑?
"tcp 内核接收和发送缓冲区"sysctl -x net.ipv4.tcp_mem -> net.ipv4.tcp_rmem = 4096 87380 6291456sysctl -x net.ipv4.tcp_rmem -> net.ipv4.tcp_wmem = 4096 16384 4194304--------------------------------------------------------------"本地测试"--------------------------...
2024-01-10在Linux内核中添加了新的网络协议
我知道在linux内核中,我们可以在传输层添加我们自己的协议,类似于TCP,UDP等。是否有任何钩子可以在网络层上注册类似于IP,ARP的新协议,可以将数据包传输到应用程序,以及如何在Linux内核中添加此协议?回答:要处理从用户空间到协议的通信,请使用内核套接字API注册协议。这使您可以从用户...
2024-01-10Linux上TCP的几个内核参数调优
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。调优清单好了,在这里先列出调优清单。请记住,这里只是笔者在内网进行TCP...
2024-01-10Linux内核中红黑树算法的实现详解
一、简介平衡二叉树(BalancedBinary Tree或Height-Balanced Tree)又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树上结点的平衡因子BF(BalanceFactor)定义为该结点的左子树的深度减去它的右子树的...
2024-01-10Linux 内核 TCP MSS 机制详细分析
作者:Hcamael@知道创宇 404 实验室时间:2019 年 6 月 26 日英文版本:https://paper.seebug.org/967/前言上周Linux内核修复了4个CVE漏洞[1],其中的CVE-2019-11477感觉是一个很厉害的Dos漏洞,不过因为有其他事打断,所以进展的速度比较慢,这期间网上已经有相关的分析文章了。[2][3]而我在尝试复现CVE-2019-11477漏洞...
2024-01-10